/**
 * Extjs的验证
 */
(function() {
	//重写原有的字段Ext.data.validation.lengthMessge的值，原来是英文的
	Ext.data.validations.lengthMessage = "错误的长度";
	Ext.onReady(function() {
		/**
		 * 验证age要在指定的范围内
		 * 我们可以自定义验证器
		 */
		/**
		 * 自定义验证器的处理方法
		 * @param {Object} config 
		 * @param {Object} value 传入的验证值
		 */
		Ext.apply(Ext.data.validations, {
			age : function(config, value) {
				var min = config.min;
				var max = config.max;
				if (min <= value && value <= max) {
					return true;
				} else {
					this.ageMessage = this.ageMessage + "范围在" + min + "-" + max
							+ "之间";
					return false;
				}
			},
			ageMessage : 'age数据范围不正确。'
		});
		Ext.define("Person", {
			extend : "Ext.data.Model",
			fields : [ {
				name : 'name',
				type : 'auto'
			}, {
				name : 'age',
				type : 'int'
			}, {
				name : 'email',
				type : 'auto'
			} ],
			/**
			 * //定义一个校验器
			 * 校验器的类型是校验字段的长度
			 * 校验的字段是name属性，
			 * 校验的规则是长度在2到6之间
			 */
			validations : [ {
				type : 'length',
				field : 'name',
				min : 2,
				max : 16
			}, {
				type : 'age',
				field : 'age',
				min : 0,
				max : 130
			} ]
		});

		var person = Ext.create("Person", {
			name : "zhangsan",
			age : -24,
			email : 'zhangsan2013@136@.com'
		});

		//得到错误信息数组
			var errors = person.validate();
			var errorInfo = [];
			errors.each(function(args) {
				/**
				 * args.field就是
				 * 被验证的属性name
				 * args.message就是
				 * Ext.data.validations.lengthMessage = "错误的长度"
				 */
				errorInfo.push(args.field + " " + args.message);
			});
			alert(errorInfo.join("\n"));

		});
})();